<html>
<head>
	<title>Serialization benchmark results</title>
	<link href='default.css' rel='stylesheet' type='text/css' />
</head>
<body>

<h2>Serialization results of <span>Northwind database tables serializtion</span> run at 05/02/2010</h2>
<span class="summary">These benchmarks show the total time in ticks (1/1000ms) that it takes each serializer to serialize and deserialize each entire table from the  <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Common/DataModel/NorthwindData.cs'>Northwind Database</a> (3202 records) 100 Times. <br/><br/>The full source code of the serialization benchmarks (which generated this report) is <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Benchmarks.Console/Program.cs'>available here</a>.</span><div id='combined'>
<h3>Combined results of all benchmarks below</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>460508</td><th>4.08x</th><td>249089938</td><td>757508321</td><td>1006598259</td><td>100659.8259</td><th>5.49x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>344645</td><th>3.06x</th><td>550800869</td><td>1595872607</td><td>2146673476</td><td>214667.3476</td><th>11.72x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>118407</td><th>1.05x</th><td>633390767</td><td>290249103</td><td>923639870</td><td>92363.987</td><th>5.04x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>346173</td><th>3.07x</th><td>587085463</td><td>1409237494</td><td>1996322957</td><td>199632.2957</td><th>10.89x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>112762</td><th>1x</th><td>82134402</td><td>101104094</td><td>183238496</td><td>18323.8496</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>247146</td><th>2.19x</th><td>273570131</td><td>269757108</td><td>543327239</td><td>54332.7239</td><th>2.97x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>289323</td><th>2.57x</th><td>183448718</td><td>458515535</td><td>641964253</td><td>64196.4253</td><th>3.50x</th></tr>
</tbody>
</table>
</div>
<h3>Results of serializing and deserializing CategoryDto 10000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>1232</td><th>3.23x</th><td>536396</td><td>1419944</td><td>1956340</td><td>195.634</td><th>3.15x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>672</td><th>1.76x</th><td>787542</td><td>2624301</td><td>3411843</td><td>341.1843</td><th>5.49x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1127</td><th>2.96x</th><td>2060415</td><td>2001529</td><td>4061944</td><td>406.1944</td><th>6.54x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>790</td><th>2.07x</th><td>1035993</td><td>2891083</td><td>3927076</td><td>392.7076</td><th>6.32x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>381</td><th>1x</th><td>215088</td><td>406275</td><td>621363</td><td>62.1363</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>598</td><th>1.57x</th><td>358409</td><td>459925</td><td>818334</td><td>81.8334</td><th>1.32x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>622</td><th>1.63x</th><td>304740</td><td>870734</td><td>1175474</td><td>117.5474</td><th>1.89x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CustomerDto 10000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>32721</td><th>2.62x</th><td>13231217</td><td>51006223</td><td>64237440</td><td>6423.744</td><th>3.99x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>23869</td><th>1.91x</th><td>15174782</td><td>84753686</td><td>99928468</td><td>9992.8468</td><th>6.21x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>16132</td><th>1.29x</th><td>31099264</td><td>27290512</td><td>58389776</td><td>5838.9776</td><th>3.63x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>25229</td><th>2.02x</th><td>23842566</td><td>53568338</td><td>77410904</td><td>7741.0904</td><th>4.81x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>12492</td><th>1x</th><td>6912260</td><td>9168301</td><td>16080561</td><td>1608.0561</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>19140</td><th>1.53x</th><td>9244910</td><td>13674317</td><td>22919227</td><td>2291.9227</td><th>1.43x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>20928</td><th>1.68x</th><td>10932958</td><td>24350610</td><td>35283568</td><td>3528.3568</td><th>2.19x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeDto 10000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>7437</td><th>1.89x</th><td>2739008</td><td>8489042</td><td>11228050</td><td>1122.805</td><th>4.25x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>6160</td><th>1.57x</th><td>5211327</td><td>17014176</td><td>22225503</td><td>2222.5503</td><th>8.41x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>5247</td><th>1.34x</th><td>8083792</td><td>5081255</td><td>13165047</td><td>1316.5047</td><th>4.98x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>6241</td><th>1.59x</th><td>5237366</td><td>14469466</td><td>19706832</td><td>1970.6832</td><th>7.46x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>3930</td><th>1x</th><td>1200190</td><td>1441472</td><td>2641662</td><td>264.1662</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>5187</td><th>1.32x</th><td>2636741</td><td>3184764</td><td>5821505</td><td>582.1505</td><th>2.20x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>5709</td><th>1.45x</th><td>1860599</td><td>5625344</td><td>7485943</td><td>748.5943</td><th>2.83x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeTerritoryDto 10000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>5236</td><th>0x</th><td>1615266</td><td>6283999</td><td>7899265</td><td>789.9265</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>1912</td><th>0x</th><td>2516384</td><td>10332345</td><td>12848729</td><td>1284.8729</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1969</td><th>0x</th><td>5339337</td><td>4993586</td><td>10332923</td><td>1033.2923</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>2647</td><th>0x</th><td>5302572</td><td>11747968</td><td>17050540</td><td>1705.054</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>980</td><th>0x</th><td>1105260</td><td>0</td><td>1105260</td><td>110.526</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>2157</td><th>0x</th><td>1545154</td><td>2062055</td><td>3607209</td><td>360.7209</td><th>0x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>1716</td><th>0x</th><td>1090859</td><td>2716152</td><td>3807011</td><td>380.7011</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDetailDto 10000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>331678</td><th>0x</th><td>213185367</td><td>638483967</td><td>851669334</td><td>85166.9334</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>165567</td><th>0x</th><td>310458178</td><td>1133242726</td><td>1443700904</td><td>144370.0904</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>78378</td><th>0x</th><td>367116465</td><td>313314987</td><td>680431452</td><td>68043.1452</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>204384</td><th>0x</th><td>618796000</td><td>1291031890</td><td>1909827890</td><td>190982.789</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>60253</td><th>0x</th><td>82193378</td><td>0</td><td>82193378</td><td>8219.3378</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>169694</td><th>0x</th><td>253381788</td><td>283442591</td><td>536824379</td><td>53682.4379</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>127182</td><th>0x</th><td>114683578</td><td>0</td><td>114683578</td><td>11468.3578</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDto 10000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>400652</td><th>4.64x</th><td>225619130</td><td>669485649</td><td>895104779</td><td>89510.4779</td><th>5.72x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>302174</td><th>3.50x</th><td>520154262</td><td>1446488743</td><td>1966643005</td><td>196664.3005</td><th>12.57x</th></tr><tr class='best-size'><th class='c1'>Microsoft BinaryFormatter</th><td>86323</td><th>1x</th><td>573703049</td><td>238240935</td><td>811943984</td><td>81194.3984</td><th>5.19x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>302158</td><th>3.50x</th><td>543507970</td><td>1303983707</td><td>1847491677</td><td>184749.1677</td><th>11.81x</th></tr><tr class='best-time'><th class='c1'>ProtoBuf.net</th><td>90569</td><th>1.05x</th><td>70501847</td><td>85906152</td><td>156407999</td><td>15640.7999</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>212942</td><th>2.47x</th><td>256642517</td><td>244966137</td><td>501608654</td><td>50160.8654</td><th>3.21x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>252061</td><th>2.92x</th><td>165141965</td><td>414950046</td><td>580092011</td><td>58009.2011</td><th>3.71x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ProductDto 10000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>25851</td><th>0x</th><td>9821543</td><td>40965009</td><td>50786552</td><td>5078.6552</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>15365</td><th>0x</th><td>13642943</td><td>73084194</td><td>86727137</td><td>8672.7137</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>6819</td><th>0x</th><td>23002913</td><td>19938623</td><td>42941536</td><td>4294.1536</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>15449</td><th>0x</th><td>20688184</td><td>74521500</td><td>95209684</td><td>9520.9684</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>4044</td><th>0x</th><td>3105343</td><td>0</td><td>3105343</td><td>310.5343</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>13517</td><th>0x</th><td>8739191</td><td>13799175</td><td>22538366</td><td>2253.8366</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>11103</td><th>0x</th><td>6157843</td><td>0</td><td>6157843</td><td>615.7843</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing RegionDto 10000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>485</td><th>0x</th><td>340228</td><td>770688</td><td>1110916</td><td>111.0916</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>159</td><th>0x</th><td>456670</td><td>1266864</td><td>1723534</td><td>172.3534</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>628</td><th>0x</th><td>1318153</td><td>1225498</td><td>2543651</td><td>254.3651</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>159</td><th>0x</th><td>389307</td><td>1131739</td><td>1521046</td><td>152.1046</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>54</td><th>0x</th><td>74260</td><td>0</td><td>74260</td><td>7.426</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>135</td><th>0x</th><td>123896</td><td>128659</td><td>252555</td><td>25.2555</td><th>0x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>143</td><th>0x</th><td>96191</td><td>299326</td><td>395517</td><td>39.5517</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ShipperDto 10000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>486</td><th>4.42x</th><td>260620</td><td>661450</td><td>922070</td><td>92.207</td><th>5.29x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>198</td><th>1.8x</th><td>422765</td><td>1128477</td><td>1551242</td><td>155.1242</td><th>8.90x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>700</td><th>6.36x</th><td>1079152</td><td>1182908</td><td>2262060</td><td>226.206</td><th>12.98x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>198</td><th>1.8x</th><td>362164</td><td>981870</td><td>1344034</td><td>134.4034</td><th>7.72x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>110</td><th>1x</th><td>76111</td><td>98095</td><td>174206</td><td>17.4206</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>168</td><th>1.53x</th><td>140606</td><td>140438</td><td>281044</td><td>28.1044</td><th>1.61x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>180</td><th>1.64x</th><td>112513</td><td>319238</td><td>431751</td><td>43.1751</td><th>2.48x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing SupplierDto 10000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>11521</td><th>2.79x</th><td>4315977</td><td>17333540</td><td>21649517</td><td>2164.9517</td><th>4.15x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>8253</td><th>2.00x</th><td>5901941</td><td>28563895</td><td>34465836</td><td>3446.5836</td><th>6.61x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>6032</td><th>1.46x</th><td>10278242</td><td>9455984</td><td>19734226</td><td>1973.4226</td><th>3.79x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>8238</td><th>1.99x</th><td>7829628</td><td>20539224</td><td>28368852</td><td>2836.8852</td><th>5.44x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>4135</td><th>1x</th><td>2332285</td><td>2878895</td><td>5211180</td><td>521.118</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>6322</td><th>1.53x</th><td>3191218</td><td>5001654</td><td>8192872</td><td>819.2872</td><th>1.57x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>6822</td><th>1.65x</th><td>3492987</td><td>8182220</td><td>11675207</td><td>1167.5207</td><th>2.24x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing TerritoryDto 10000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>6459</td><th>5.64x</th><td>2387590</td><td>9112473</td><td>11500063</td><td>1150.0063</td><th>5.47x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>3319</td><th>2.90x</th><td>3148250</td><td>15299329</td><td>18447579</td><td>1844.7579</td><th>8.78x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>2846</td><th>2.49x</th><td>7086853</td><td>6995980</td><td>14082833</td><td>1408.2833</td><th>6.70x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>3319</td><th>2.90x</th><td>5269776</td><td>12803806</td><td>18073582</td><td>1807.3582</td><th>8.60x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>1145</td><th>1x</th><td>896621</td><td>1204904</td><td>2101525</td><td>210.1525</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>2789</td><th>2.44x</th><td>1355730</td><td>2329873</td><td>3685603</td><td>368.5603</td><th>1.75x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>3001</td><th>2.62x</th><td>1602956</td><td>4217343</td><td>5820299</td><td>582.0299</td><th>2.77x</th></tr>
</tbody>
</table>
</body>
</html>

